home *** CD-ROM | disk | FTP | other *** search
/ Oh!X 2000 Spring / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).7z / Oh!X 2000 Spring Special CD-ROM (Japan) (Part 1).bin / F2JW / trans / dic_verb.cpp < prev    next >
C/C++ Source or Header  |  1999-10-11  |  33KB  |  1,166 lines

  1. //
  2. // フランス語→日本語翻訳プログラム 辞書(動詞部)
  3. // ]tre, faire, avoir, allerなど
  4. //
  5. #include "stdafx.h"
  6. #include    <string.h>
  7.  
  8. #include    "f2j.h"
  9. #include    "score.h"
  10. #include    "myprot.h"
  11.  
  12. extern    TOKEN        *currentTree;
  13.  
  14. char    *futureVerbTable[] = {
  15.     "fleurir",
  16.     ""    // End Code
  17. };
  18.  
  19. BOOL
  20. ShouldBeFuture(TOKEN *p)
  21. {
  22.     if(p->jpProp & JP_PROP_MOVE)
  23.         return(TRUE);
  24.  
  25.     for(int i = 0; futureVerbTable[i][0]; i++) {
  26.         if(IsTokenFrench(p, futureVerbTable[i]))
  27.             return(TRUE);
  28.     }
  29.     return(FALSE);
  30. }
  31.  
  32. const JP_VERB    dic_aller[] = {
  33.     JP_VERB("%0H.%vt1",             JP_KIND_NONE,    // 未来形 je vais partir.
  34.         JP_PROP_CONDITION, 
  35.         JP_HINT_SVO,
  36.         FR_COMPOSE_ETRE,
  37.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  38.         FR_PART_VERB_INF,        JP_PROP_NONE,    ShouldBeFuture,
  39.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  40.     ),
  41.     JP_VERB("%0H.%c1",            JP_KIND_NONE,    // 未来形 je vais partir.
  42.         JP_PROP_CONDITION,
  43.         JP_HINT_SVO,
  44.         FR_COMPOSE_ETRE,
  45.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  46.         FR_PART_VERB_INF,        JP_PROP_NONE,    ShouldBeFuture,
  47.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  48.     ),
  49.     JP_VERB("%0H.%c1I.行",        JP_KIND_GODAN_KA2,    // je vais voir Marie.
  50.         JP_PROP_ACTION_MOVE, 
  51.         JP_HINT_SVO,        
  52.         FR_COMPOSE_ETRE,
  53.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  54.         FR_PART_VERB_INF,        JP_PROP_ACTION,
  55.         FR_PART_NONE,            JP_PROP_NONE
  56.     ),
  57.     JP_VERB( "%0H.%t1.",         JP_KIND_NONE,    // 未来形
  58.         JP_PROP_CONDITION,
  59.         JP_HINT_SVO,
  60.         FR_COMPOSE_ETRE,
  61.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  62.         FR_PART_VERB_INF,        JP_PROP_ALL,
  63.         FR_PART_NONE,            JP_PROP_NONE
  64.     ),
  65.     JP_VERB( "%0H.%1I.行",        JP_KIND_GODAN_KA2,
  66.         JP_PROP_ACTION_MOVE, 
  67.         JP_HINT_SVO,
  68.         FR_COMPOSE_ETRE,
  69.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  70.         FR_PART_PREPOSIT_A,        JP_PROP_PLACE | JP_PROP_MOVE,
  71.         FR_PART_NONE,            JP_PROP_NONE
  72.     ),
  73.     JP_VERB( "%0H.%1I.行",        JP_KIND_GODAN_KA2,
  74.         JP_PROP_ACTION_MOVE, 
  75.         JP_HINT_SVO,
  76.         FR_COMPOSE_ETRE,
  77.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  78.         FR_PART_PREPOSIT_DANS,    JP_PROP_PLACE,
  79.         FR_PART_NONE,            JP_PROP_NONE
  80.     ),
  81.     JP_VERB( "%0H.行",            JP_KIND_GODAN_KA2,
  82.         JP_PROP_ACTION_MOVE,
  83.         JP_HINT_SVO,            FR_COMPOSE_ETRE,
  84.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  85.         FR_PART_NONE,            JP_PROP_NONE,
  86.         FR_PART_NONE,            JP_PROP_NONE
  87.     ),
  88. };
  89.  
  90. BOOL
  91. Is_Il_Y_A(TOKEN *s, TOKEN *v)
  92. {
  93.     if(IsTokenFrench(s, "il")
  94.     && v
  95.     && SearchToken(FR_PART_ADVERB_Y, v->child))
  96.         return(TRUE);
  97.  
  98.     return(FALSE);
  99. }
  100.  
  101. int
  102. CntToken(TOKEN *start, FR_PART frPart)
  103. {
  104.     int    cnt = 0;
  105.  
  106.     for(TOKEN *p = start; p; p = p->next) {
  107.         if(p->frPart & frPart)    cnt++;
  108.     }
  109.     return(cnt);
  110. }
  111.  
  112. void
  113. Make_Il_Y_A(TOKEN *verb)
  114. {
  115.     TOKEN    *y = SearchToken(FR_PART_ADVERB_Y, verb->child);
  116.     if(y)    y->prtControl = PRT_CONTROL_DISABLE;
  117. }
  118.  
  119. static    JP_PREPOSITION    dic_il_y_a[] = {
  120.     JP_PREPOSITION(    "%1前",        JP_KIND_NONE,        // je l'ai pas vu il y a deux ans.
  121.         JP_PROP_TIME,
  122.         CMP_TOKEN ( FR_PART_VERB_GENERAL,    JP_PROP_ALL),
  123.         CMP_TOKEN ( FR_PART_NOUN_GENERAL,    JP_PROP_TIME)
  124.     ),
  125.     JP_PREPOSITION(    "%1G過ぎ",    JP_KIND_TA,        // il y a deux ans.
  126.         JP_PROP_TIME,
  127.         CMP_TOKEN ( FR_PART_NONE,            JP_PROP_NONE),
  128.         CMP_TOKEN ( FR_PART_NOUN_GENERAL,    JP_PROP_TIME)
  129.     )
  130. };
  131.  
  132. PREPOSITION prep_Il_Y_A_time = {
  133.     "il y a <time>",    FR_PART_PREPOSIT_IL_Y_A,        JPPREPOSIT_DIC(dic_il_y_a)
  134. };
  135.  
  136. BOOL
  137. Is_Il_Y_A_time(TOKEN *s, TOKEN *v)
  138. {
  139.     if(IsObjectMatch(s, FR_PART_NOUN_IMPERSONAL)
  140.     && s->frAttrib == FR_ATTRIB_IL
  141.     && v
  142.     && SearchToken(FR_PART_ADVERB_Y, v->child)
  143.     && v->object1
  144.     && (v->object1->jpProp & JP_PROP_TIME)
  145.     && (v->object1->jpProp & JP_PROP_UNIT)
  146.     && CntToken(currentTree, FR_PART_VERB) >= 2)
  147.         return(TRUE);
  148.     else
  149.         return(FALSE);
  150. }
  151.  
  152. void
  153. Make_Il_Y_A_time(TOKEN *verb)
  154. {
  155.     TOKEN    *y = SearchToken(FR_PART_ADVERB_Y, verb->child);
  156.     if(y)    y->prtControl = PRT_CONTROL_DISABLE;
  157.  
  158.     ChangeToPreposition(verb, &prep_Il_Y_A_time);
  159. //    sentence->which = &prep_Il_Y_A_time.jpPreposition[prep_Il_Y_A_time.proposed];
  160.     verb->which = NULL;
  161. //    verb->object1 = v->object1;
  162.     verb->jpProp = JP_PROP_TIME;
  163. }
  164.  
  165. BOOL
  166. CheckVerbNegative(TOKEN *s, TOKEN *v)
  167. {
  168.     if(v
  169.     && (v->jpProp & JP_PROP_NEGATIVE))
  170.         return(TRUE);
  171.     else
  172.         return(FALSE);
  173. }
  174.  
  175. BOOL
  176. HasAdverbQue(TOKEN *p)
  177. {
  178.     if(p
  179.     && (p->jpEmphasis & JP_EMPHASIS_ONLY))
  180.         return(TRUE);
  181.     else
  182.         return(FALSE);
  183. }
  184.  
  185. void
  186. Make_Ne_Avoir_Que_A_INF(TOKEN *verb)
  187. {
  188.     verb->jpProp &= ~JP_PROP_NEGATIVE;
  189.     if(verb->object1) {
  190.         verb->object1->jpEmphasis = JP_EMPHASIS_SEULEMENT;
  191.     }
  192. }
  193.  
  194. void
  195. MakeNoPlus1(TOKEN *verb)
  196. {
  197.     verb->jpProp &= ~JP_PROP_NEGATIVE;
  198.     if(verb->object1) {
  199.         verb->object1->prtControl = (PRT_CONTROL)(verb->object1->prtControl | PRT_CONTROL_NO_PLUS);
  200.     }
  201. }
  202.  
  203.  
  204. const    JP_VERB    dic_avoir[] = {
  205.     JP_VERB( "%2的なことろが", JP_KIND_ARU,    // Il y a du Moli}re dans cette oeuvre.
  206.         JP_PROP_CONDITION,
  207.         JP_HINT_SVOO,
  208.         FR_COMPOSE_AVOIR,
  209.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,
  210.         FR_PART_ADVERB_Y,        JP_PROP_ALL,
  211.         FR_PART_PREPOSIT_DE,    JP_PROP_UNIQUE
  212.     ),
  213.     JP_VERB( "%1", JP_KIND_NONE,        // Ce qu'il y a de meilleur. もっと良い物
  214.         JP_PROP_CONDITION,
  215.         JP_HINT_SVO,
  216.         FR_COMPOSE_AVOIR,
  217.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    Is_Il_Y_A,
  218.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    IsNullNoun,    
  219.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  220.         Make_Il_Y_A
  221.     ),
  222.     JP_VERB( "%1前", JP_KIND_NONE,        // Il y a deux ans
  223.         JP_PROP_CONDITION,
  224.         JP_HINT_SVO,
  225.         FR_COMPOSE_AVOIR,
  226.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    Is_Il_Y_A_time,
  227.         FR_PART_NOUN_ALL,        JP_PROP_TIME,    NULL,
  228.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  229.         Make_Il_Y_A_time
  230.     ),
  231.     JP_VERB( "%1G.",             JP_KIND_IRU,                // Il y a ...
  232.         JP_PROP_CONDITION,
  233.         JP_HINT_SVO | JP_HINT_PLACE1_ADVERB | JP_HINT_VOLUME1_ADVERB,
  234.         FR_COMPOSE_AVOIR,
  235.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    Is_Il_Y_A,
  236.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  237.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  238.         Make_Il_Y_A
  239.     ),
  240.     JP_VERB( "%0H.%a2必要が", JP_KIND_ARU,        // j'ai besoin de dormir.
  241.         JP_PROP_CONDITION,
  242.         JP_HINT_SVOO,
  243.         FR_COMPOSE_AVOIR,
  244.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  245.         FR_PART_NOUN_GENERAL,    JP_PROP_ALL,    "besoin",
  246.         FR_PART_PREPOSIT_DE_INF,JP_PROP_ALL,    NULL
  247.     ),
  248.     JP_VERB( "%0H.%a2つもり", JP_KIND_DA,        // j'ai l'intention d'aller en Italie.
  249.         JP_PROP_CONDITION,
  250.         JP_HINT_SVOO,
  251.         FR_COMPOSE_AVOIR,
  252.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  253.         FR_PART_NOUN_GENERAL,    JP_PROP_ALL,    "intention",
  254.         FR_PART_PREPOSIT_DE_INF,JP_PROP_ALL,    NULL
  255.     ),
  256.     JP_VERB( "%0H.%2G.痛",    JP_KIND_KEIYOSHI,    // j'ai mal @ dos.
  257.         JP_PROP_CONDITION | JP_PROP_EMOTION,
  258.         JP_HINT_SVOO | JP_HINT_HUMAN,
  259.         FR_COMPOSE_AVOIR,
  260.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  261.         FR_PART_ADVERB_GENERAL,    JP_PROP_ALL,    "mal",
  262.         FR_PART_PREPOSIT_A,        JP_PROP_BODY,    NULL
  263.     ),
  264.     // Kgが2ある -> 2Kgがある
  265.     JP_VERB( "%1G.", JP_KIND_ARU,        // Il y a ...
  266.         JP_PROP_CONDITION,
  267.         JP_HINT_SVO | JP_HINT_PLACE1_ADVERB,
  268.         FR_COMPOSE_AVOIR,
  269.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    Is_Il_Y_A,
  270.         FR_PART_NOUN_ALL,        JP_PROP_UNIT,    NULL,
  271.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  272.         Make_Il_Y_A
  273.     ),
  274.     JP_VERB( "%1G.", JP_KIND_ARU,        // Il y a ...
  275.         JP_PROP_CONDITION,
  276.         JP_HINT_SVO | JP_HINT_PLACE1_ADVERB | JP_HINT_VOLUME1_ADVERB,
  277.         FR_COMPOSE_AVOIR,
  278.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    Is_Il_Y_A,
  279.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  280.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  281.         Make_Il_Y_A
  282.     ),
  283.     JP_VERB( "%0C.%1的なところが", JP_KIND_ARU,        // Cet homme a du Julien Sorel.
  284.         JP_PROP_CONDITION,
  285.         JP_HINT_SVO | JP_HINT_HUMAN,
  286.         FR_COMPOSE_AVOIR,
  287.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,
  288.         FR_PART_PREPOSIT_DE,JP_PROP_UNIQUE,
  289.         FR_PART_NONE,        JP_PROP_NONE
  290.     ),
  291.     JP_VERB( "%0N.",        JP_KIND_NONE,    // ami que j'ai. -> 私の持っている友達 -> 私の友達
  292.         JP_PROP_CONDITION,
  293.         JP_HINT_SVO | JP_HINT_HUMAN,
  294.         FR_COMPOSE_AVOIR,
  295.         FR_PART_NOUN_ALL,                JP_PROP_ALL,
  296.         FR_PART_NOUN_RELATIVE_OBJECT,    JP_PROP_NONE,
  297.         FR_PART_NONE,                    JP_PROP_NONE
  298.     ),
  299.     // Vous n'avez qu'@ appuyer sur le button.
  300.     JP_VERB( "%0H.%s1D.良",    JP_KIND_KEIYOSHI,
  301.         JP_PROP_CONDITION,
  302.         JP_HINT_SVO,
  303.         FR_COMPOSE_AVOIR,
  304.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    CheckVerbNegative,
  305.         FR_PART_PREPOSIT_A_INF, JP_PROP_ALL,    HasAdverbQue,
  306.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  307.         Make_Ne_Avoir_Que_A_INF
  308.     ),
  309.     JP_VERB( "%0H.%a1必要%G", JP_KIND_ARU,
  310.         JP_PROP_CONDITION,
  311.         JP_HINT_SVO,
  312.         FR_COMPOSE_AVOIR,
  313.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  314.         FR_PART_PREPOSIT_A_INF, JP_PROP_ALL,
  315.         FR_PART_NONE,            JP_PROP_NONE
  316.     ),
  317. // Subject + <avoir> + Adjective
  318.     JP_VERB( "%0H.暑", JP_KIND_KEIYOSHI,
  319.         JP_PROP_CONDITION,
  320.         JP_HINT_SVA,
  321.         FR_COMPOSE_AVOIR,
  322.         FR_PART_NOUN_ALL,            JP_PROP_HUMAN,    NULL,
  323.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_ALL,    "chaud",
  324.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  325.     ),
  326.     JP_VERB( "%0H.寒", JP_KIND_KEIYOSHI,
  327.         JP_PROP_CONDITION,
  328.         JP_HINT_SVA,
  329.         FR_COMPOSE_AVOIR,
  330.         FR_PART_NOUN_ALL,            JP_PROP_HUMAN,    NULL,
  331.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_ALL,    "froid",
  332.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  333.     ),
  334. // Subject + <avoir> + Noun
  335.     JP_VERB( "%0H.%1I.合", JP_KIND_GODAN_WA,    // J'ai accident.
  336.         JP_PROP_CONDITION,
  337.         JP_HINT_SVO | JP_HINT_HUMAN,
  338.         FR_COMPOSE_AVOIR,
  339.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,        NULL,
  340.         FR_PART_NOUN_GENERAL,    JP_PROP_NONE,    "accident",    NULL,
  341.         FR_PART_NONE,            JP_PROP_NONE,    NULL,        NULL
  342.     ),
  343.     JP_VERB( "%0H.%1.年上", JP_KIND_DA,    // J'ai deux ans de plus que lui.
  344.         JP_PROP_CONDITION,
  345.         JP_HINT_SVO | JP_HINT_HUMAN | JP_HINT_COMPARE1,
  346.         FR_COMPOSE_AVOIR,
  347.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,        NULL,
  348.         FR_PART_NOUN_ALL,        JP_PROP_TIME,    "an",        IsAttribPlus,
  349.         FR_PART_NONE,            JP_PROP_NONE,    NULL,        NULL,
  350.         MakeNoPlus1
  351.     ),
  352.     JP_VERB( "%0H.%1.年下", JP_KIND_DA,    // J'ai deux ans de moins que lui.
  353.         JP_PROP_CONDITION,
  354.         JP_HINT_SVO | JP_HINT_HUMAN | JP_HINT_COMPARE1,
  355.         FR_COMPOSE_AVOIR,
  356.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,    NULL,
  357.         FR_PART_NOUN_ALL,        JP_PROP_TIME,    "an",    IsAttribMoins,
  358.         FR_PART_NONE,            JP_PROP_NONE,    NULL,    NULL,
  359.         NULL
  360.     ),
  361.     JP_VERB( "%0H.才", JP_KIND_DA,    // J'ai vingt-cinq ans.
  362.         JP_PROP_CONDITION,
  363.         JP_HINT_SVO | JP_HINT_HUMAN | JP_HINT_VOLUME1_ADVERB,
  364.         FR_COMPOSE_AVOIR,
  365.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  366.         FR_PART_NOUN_ALL,        JP_PROP_TIME,    "an",
  367.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  368.     ),
  369.     JP_VERB( "%0H.%a1G必要", JP_KIND_DA,        // j'ai besoin de exercises.
  370.         JP_PROP_CONDITION,
  371.         JP_HINT_SVO,
  372.         FR_COMPOSE_AVOIR,
  373.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,        NULL,
  374.         FR_PART_NOUN_GENERAL,    JP_PROP_ALL,    "besoin",    HasPrepositionDe,
  375.         FR_PART_NONE,            JP_PROP_NONE,    NULL,        NULL,
  376.         ReplaceObject1De
  377.     ),
  378.     JP_VERB( "%0H.%1", JP_KIND_DA,
  379.         JP_PROP_CONDITION,
  380.         JP_HINT_SVO | JP_HINT_HUMAN,
  381.         FR_COMPOSE_AVOIR,
  382.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  383.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "cong{",
  384.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  385.     ),
  386.     JP_VERB( "%0H.空腹", JP_KIND_DA,
  387.         JP_PROP_CONDITION,
  388.         JP_HINT_SVO | JP_HINT_HUMAN,
  389.         FR_COMPOSE_AVOIR,
  390.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  391.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "faim",
  392.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  393.     ),
  394.     JP_VERB( "%0H.行わ", JP_KIND_RERU,    // les examens auront lieu demain.
  395.         JP_PROP_ACTION,
  396.         JP_HINT_SV,
  397.         FR_COMPOSE_AVOIR,
  398.         FR_PART_NOUN_ALL,        JP_PROP_THING,    NULL,
  399.         FR_PART_NOUN_GENERAL,    JP_PROP_NONE,    "lieu",
  400.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  401.     ),
  402.     JP_VERB( "%0H.正し", JP_KIND_KEIYOSHI,    // J'ai raison.
  403.         JP_PROP_CONDITION,
  404.         JP_HINT_SVO | JP_HINT_HUMAN,
  405.         FR_COMPOSE_AVOIR,
  406.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  407.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "raison",
  408.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  409.     ),
  410.     JP_VERB( "%0H.喉が渇いて",    JP_KIND_IRU,
  411.         JP_PROP_CONDITION,
  412.         JP_HINT_SVO | JP_HINT_HUMAN,
  413.         FR_COMPOSE_AVOIR,
  414.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  415.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "soif",
  416.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  417.     ),
  418.     JP_VERB( "%0H.間違って", JP_KIND_IRU,
  419.         JP_PROP_CONDITION,
  420.         JP_HINT_SVO | JP_HINT_HUMAN,
  421.         FR_COMPOSE_AVOIR,
  422.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,    NULL,
  423.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "tort",
  424.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  425.     ),
  426.     JP_VERB( "%0C.%1G.",        JP_KIND_IRU,
  427.         JP_PROP_CONDITION,
  428.         JP_HINT_SVO | JP_HINT_VOLUME1_ADVERB,
  429.         FR_COMPOSE_AVOIR,
  430.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  431.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  432.         FR_PART_NONE,            JP_PROP_NONE
  433.     ),
  434.     JP_VERB( "%0H.%1W.感",        JP_KIND_ZIRU,
  435.         JP_PROP_CONDITION,
  436.         JP_HINT_SVO | JP_HINT_HUMAN,
  437.         FR_COMPOSE_AVOIR,
  438.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  439.         FR_PART_NOUN_ALL,        JP_PROP_EMOTION,
  440.         FR_PART_NONE,            JP_PROP_NONE
  441.     ),
  442.     JP_VERB( "%0H.%1W.持って", JP_KIND_IRU,
  443.         JP_PROP_CONDITION,
  444.         JP_HINT_SVO | JP_HINT_HUMAN,
  445.         FR_COMPOSE_AVOIR,
  446.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  447.         FR_PART_NOUN_ALL,        JP_PROP_UNIT,
  448.         FR_PART_NONE,            JP_PROP_NONE
  449.     ),
  450.     JP_VERB( "%0H.%1W.持って", JP_KIND_IRU,
  451.         JP_PROP_CONDITION,
  452.         JP_HINT_SVO | JP_HINT_HUMAN | JP_HINT_VOLUME1_ADVERB,
  453.         FR_COMPOSE_AVOIR,
  454.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  455.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  456.         FR_PART_NONE,            JP_PROP_NONE
  457.     ),
  458.     JP_VERB( "%0C%1G.", JP_KIND_ARU,
  459.         JP_PROP_CONDITION,
  460.         JP_HINT_SVO,
  461.         FR_COMPOSE_AVOIR,
  462.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  463.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  464.         FR_PART_NONE,            JP_PROP_NONE
  465.     ),
  466. };
  467.  
  468. //
  469. // 強調構文になりえるか
  470. //
  471. BOOL
  472. Is_Ce_Noun_Que(TOKEN *s, TOKEN *v)
  473. {
  474.     if(IsObjectMatch(s, FR_PART_NOUN_IMPERSONAL)
  475.     && v
  476.     && v->object1
  477.     && !(v->object1->jpEmphasis & JP_EMPHASIS_SENTENCE)
  478.     // C'est ce que ...は除外 eg) C'est ce @ quoi je pense.
  479.     && !IsTokenFrench(v->object1, "ce")) {
  480.         TOKEN *que = SearchToken(FR_PART_RELATIVE_ALL, v->object1->child);
  481.         if(que && (que->frPartChoice & FR_PART_OBJECT))
  482.             return(TRUE);
  483.     }
  484.     return(FALSE);
  485. }
  486.  
  487. //
  488. // 強調構文を作る
  489. //
  490. void
  491. Make_Ce_Noun_Que(TOKEN *verb)
  492. {
  493.     if(verb
  494.     && verb->object1
  495.     && !(verb->object1->jpEmphasis & JP_EMPHASIS_SENTENCE)) {
  496.         TOKEN    *obj = verb->object1;
  497.         TOKEN    *que = SearchToken(FR_PART_RELATIVE_ALL, obj->child);
  498.         if(que
  499.         && que->frPartChoice & FR_PART_OBJECT) {
  500.             TOKEN    *altQue = CopyCurrentTree(que, "Make_Ce_Noun_Que", FR_PART_OBJECT);
  501.             obj->jpEmphasis |= JP_EMPHASIS_SENTENCE;
  502.             verb->subject->prtControl = PRT_CONTROL_DISABLE;    // 文法上の主語は表示しない
  503. //            ImproveSubjectVerb(que->subject, 
  504.             TOKEN    *article = SearchToken(FR_PART_ARTICLE_ALL, obj->child);
  505.             if(article
  506.             && article->prtControl == PRT_CONTROL_DISABLE) {
  507.                 // 私が記事を書いたのは理由だ。 私が記事を書いたのは<その>理由だ。
  508.                 article->prtControl = PRT_CONTROL_ENABLE;
  509.             }
  510.             verb->scoreSelect += SCORE_EMPHASIS_SENTENCE;
  511.         }
  512.     }
  513. }
  514.  
  515. BOOL
  516. IsOnlyTime(TOKEN *p)
  517. {
  518.     if( (p->jpProp & JP_PROP_TIME)
  519.     && !(p->jpProp & JP_PROP_HUMAN)
  520.     && !(p->jpProp & JP_PROP_THING))
  521.         return(TRUE);
  522.  
  523.     return(FALSE);
  524. }
  525.  
  526. //
  527. // その動詞は、<plus>の副詞を持っているか
  528. //
  529. BOOL
  530. HasVerbPlus(TOKEN *s, TOKEN *v)
  531. {
  532.     for(TOKEN *q = v->child; q; q = q->next) {
  533.         if(IsTokenFrench(q, "plus"))
  534.         return(TRUE);
  535.     }
  536.     return(FALSE);
  537. }
  538.  
  539. void
  540. CancelAdverbPlus(TOKEN *sentence)
  541. {
  542.     for(TOKEN *q = sentence->child; q; q = q->next) {
  543.         if(IsTokenFrench(q, "plus")) {
  544.             q->prtControl = PRT_CONTROL_DISABLE;
  545.             return;
  546.         }
  547.     }
  548.     PrintInternalError("CancelVerbPlus");
  549. }
  550.  
  551. const    JP_VERB    dic_etre[] = {
  552.     JP_VERB( "%a2NH.%vts1", JP_KIND_DA,        // c'est hier que S + V 昨日 -> 昨日だ
  553.         JP_PROP_CONDITION,
  554.         JP_HINT_SVA,
  555.         FR_COMPOSE_AVOIR,
  556.         FR_PART_NOUN_IMPERSONAL,            JP_PROP_NONE,            NULL,
  557.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL | FR_PART_NUMETRIC_ALL), JP_PROP_ALL,    IsJpKind_NO,
  558.         FR_PART_SENTENCE_QUE_ORIGIN,        JP_PROP_ALL,            NULL
  559.     ),
  560.     JP_VERB( "%a2NH.%tvs1", JP_KIND_NONE,    // ce est belle que SV
  561.         JP_PROP_CONDITION,
  562.         JP_HINT_SVOA,
  563.         FR_COMPOSE_AVOIR,
  564.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,
  565.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL | FR_PART_NUMETRIC_ALL), JP_PROP_ALL,
  566.         FR_PART_SENTENCE_QUE_ORIGIN,        JP_PROP_ALL
  567.     ),
  568.     JP_VERB( "%a2こと%vH.%t1", JP_KIND_NONE,    // c'est interessant de causer avec elle.
  569.         JP_PROP_CONDITION,
  570.         JP_HINT_SVOA,
  571.         FR_COMPOSE_AVOIR,
  572.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,
  573.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_ALL,
  574.         FR_PART_PREPOSIT_DE_INF,    JP_PROP_ALL
  575.     ),
  576.     JP_VERB( "%0W%a2こと.%vH1", JP_KIND_NONE,    // ce mot est difficile @ traduire.
  577.         JP_PROP_CONDITION,
  578.         JP_HINT_SVOA,
  579.         FR_COMPOSE_AVOIR,
  580.         FR_PART_NOUN_ALL,            JP_PROP_ALL,
  581.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_ALL,
  582.         FR_PART_PREPOSIT_A_INF,        JP_PROP_ALL
  583.     ),
  584.     JP_VERB( "%0H.%s2NI.%vt1", JP_KIND_NONE,    // ils sont assez riches pour acheter voiture.
  585.         JP_PROP_CONDITION,
  586.         JP_HINT_SVOO,
  587.         FR_COMPOSE_AVOIR,
  588.         FR_PART_NOUN_ALL,            JP_PROP_ALL,
  589.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_ALL,
  590.         FR_PART_PREPOSIT_POUR_INF,    JP_PROP_ALL
  591.     ),
  592.     JP_VERB( "%0H.%2<にとって>.%1", JP_KIND_DA,    // ils sont pour moi un ami.
  593.         JP_PROP_CONDITION,
  594.         JP_HINT_SVOO,
  595.         FR_COMPOSE_AVOIR,
  596.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  597.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  598.         FR_PART_PREPOSIT_POUR,    JP_PROP_ALL
  599.     ),
  600.     JP_VERB( "%0H.%t2", JP_KIND_NONE,        // nous sommes le treize.
  601.         JP_PROP_CONDITION,
  602.         JP_HINT_SVA,
  603.         FR_COMPOSE_AVOIR,
  604.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    NULL,
  605.         FR_PART_ARTICLE_DEFINIT,    JP_PROP_NONE,    IsTokenSingle,
  606.         FR_PART_NUMETRIC_ALL,        JP_PROP_NONE,    NULL,
  607.         NULL
  608.     ),
  609. // Subject + <etre> + Noun + Preposition
  610.     JP_VERB( ".%2D何時", JP_KIND_DA,    // Quelle heure est-il @ votre montre?
  611.         JP_PROP_CONDITION,
  612.         JP_HINT_SVA | JP_HINT_DATE_SUBJECT,
  613.         FR_COMPOSE_AVOIR,
  614.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,    "il",        NULL,
  615.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    "heure",    HasQuel,
  616.         FR_PART_PREPOSIT_A,            JP_PROP_NONE,    "montre",    NULL,
  617.         NULL
  618.     ),
  619.     JP_VERB( "%0H.%a2ところ", JP_KIND_DA,        // il est en train de construire un barrage.
  620.         JP_PROP_CONDITION,
  621.         JP_HINT_SVOA,
  622.         FR_COMPOSE_AVOIR,
  623.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    NULL,
  624.         FR_PART_PREPOSIT_EN,        JP_PROP_ALL,    "train",
  625.         FR_PART_PREPOSIT_DE_INF,    JP_PROP_ALL,    NULL
  626.     ),
  627.     JP_VERB( "%0H.まさに%l2うとして", JP_KIND_IRU,    // l'avion est sur le point de d{coller.
  628.         JP_PROP_CONDITION,
  629.         JP_HINT_SVOA,
  630.         FR_COMPOSE_AVOIR,
  631.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    NULL,
  632.         FR_PART_PREPOSIT_SUR,        JP_PROP_ALL,    "point",
  633.         FR_PART_PREPOSIT_DE_INF,    JP_PROP_ALL,    NULL
  634.     ),
  635. // Subject + <etre> + Adject / Adverb
  636.     JP_VERB( "%a0H.%t1", JP_KIND_NONE,        // Changer est plaisir.
  637.         JP_PROP_CONDITION,
  638.         JP_HINT_SVA,
  639.         FR_COMPOSE_AVOIR,
  640.         FR_PART_NOUN_VERB,    JP_PROP_NONE,
  641.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_ALL,
  642.         FR_PART_NONE,        JP_PROP_NONE
  643.     ),
  644.     JP_VERB( "%0H.%f1", JP_KIND_IRU,        // je suis ici,
  645.         JP_PROP_CONDITION,
  646.         JP_HINT_SVO | JP_HINT_HUMAN,
  647.         FR_COMPOSE_AVOIR,
  648.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,
  649.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_PLACE,
  650.         FR_PART_NONE,        JP_PROP_NONE
  651.     ),
  652. // Subject + <etre> + Preposition
  653.     JP_VERB( "%0H.%1I.", JP_KIND_ARU,            // c'est @ Paris. パリで -> パリに
  654.         JP_PROP_CONDITION,
  655.         JP_HINT_SVA,
  656.         FR_COMPOSE_AVOIR,
  657.         FR_PART_NOUN_ALL,    JP_PROP_THING,
  658.         FR_PART_PREPOSIT_A,    JP_PROP_ALL,
  659.         FR_PART_NONE,        JP_PROP_NONE
  660.     ),
  661.     JP_VERB( "%0H.%1のもの", JP_KIND_KEIYODOSHI,    // c'est @ moi.
  662.         JP_PROP_CONDITION,
  663.         JP_HINT_SVA,
  664.         FR_COMPOSE_AVOIR,
  665.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  666.         FR_PART_PREPOSIT_A,    JP_PROP_CONDITION,
  667.         FR_PART_NONE,        JP_PROP_NONE
  668.     ),
  669.     JP_VERB( "%0H.%1T",         JP_KIND_IRU,
  670.         JP_PROP_CONDITION,
  671.         JP_HINT_SVO | JP_HINT_HUMAN,        // subjectをJP_HINT_HUMANにするため
  672.         FR_COMPOSE_AVOIR,
  673.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  674.         FR_PART_PREPOSIT_AVEC,    JP_PROP_HUMAN,
  675.         FR_PART_NONE,            JP_PROP_NONE
  676.     ),
  677.     JP_VERB( "%0H.%1出身", JP_KIND_DA,        // je suis de Paris. パリ出身だ
  678.         JP_PROP_CONDITION,
  679.         JP_HINT_SVO | JP_HINT_HUMAN,
  680.         FR_COMPOSE_AVOIR,
  681.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  682.         FR_PART_PREPOSIT_DE,JP_PROP_PLACE,
  683.         FR_PART_NONE,        JP_PROP_NONE
  684.     ),
  685.     JP_VERB( "%0H.%1I", JP_KIND_IRU,        // je suis @ Paris. パリで -> パリに
  686.         JP_PROP_CONDITION,
  687.         JP_HINT_SVO | JP_HINT_HUMAN,
  688.         FR_COMPOSE_AVOIR,
  689.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,
  690.         FR_PART_PREPOSIT_A,    JP_PROP_ALL,
  691.         FR_PART_NONE,        JP_PROP_NONE
  692.     ),
  693.     JP_VERB( "%0H.%vc1", JP_KIND_IRU,
  694.         // JP_PROP_HUMANのために、FR_PART_PREPOSIT_ALLにまとめられない    
  695.         // まとめると, chez elleのelleがPROP_HUMANにならない。
  696.         JP_PROP_CONDITION,
  697.         JP_HINT_SVO,
  698.         FR_COMPOSE_AVOIR,
  699.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  700.         FR_PART_PREPOSIT_CHEZ,    JP_PROP_HUMAN,
  701.         FR_PART_NONE,            JP_PROP_NONE
  702.     ),
  703.     JP_VERB( "%0H.%1Nよう",     JP_KIND_DA,
  704.         JP_PROP_CONDITION,
  705.         JP_HINT_SVA,
  706.         FR_COMPOSE_AVOIR,
  707.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  708.         FR_PART_PREPOSIT_COMME,    JP_PROP_ALL,
  709.         FR_PART_NONE,            JP_PROP_NONE
  710.     ),
  711.     JP_VERB( "%0H.%1的", JP_KIND_DA,            // Ce tableau est du Delacroix.
  712.         JP_PROP_CONDITION,
  713.         JP_HINT_SVO,
  714.         FR_COMPOSE_AVOIR,
  715.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  716.         FR_PART_PREPOSIT_DE,JP_PROP_UNIQUE,
  717.         FR_PART_NONE,        JP_PROP_NONE
  718.     ),
  719.     JP_VERB( "%0H.%a1", JP_KIND_DA,            // il est en danger.
  720.         JP_PROP_CONDITION,
  721.         JP_HINT_SVA,
  722.         FR_COMPOSE_AVOIR,
  723.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  724.         FR_PART_PREPOSIT_EN,    JP_PROP_NONE,    "danger",
  725.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  726.     ),
  727.     JP_VERB( "%0H.%1Dできて", JP_KIND_IRU,    // ces maison suis en bois.
  728.         JP_PROP_CONDITION,
  729.         JP_HINT_SVO,
  730.         FR_COMPOSE_AVOIR,
  731.         FR_PART_NOUN_ALL,        JP_PROP_THING,
  732.         FR_PART_PREPOSIT_EN,    JP_PROP_MATERIAL,
  733.         FR_PART_NONE,            JP_PROP_NONE
  734.     ),
  735.     JP_VERB( "%0H.%1I",         JP_KIND_IRU,    // Nous sommes en France.
  736.         JP_PROP_CONDITION,
  737.         JP_HINT_SVO | JP_HINT_HUMAN,
  738.         FR_COMPOSE_AVOIR,
  739.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  740.         FR_PART_PREPOSIT_EN,    JP_PROP_PLACE,
  741.         FR_PART_NONE,            JP_PROP_NONE
  742.     ),
  743.     JP_VERB( "%0H.%1N中に",     JP_KIND_ARU,    // Nos vrai ennemis sont en nous-m]mes.
  744.         JP_PROP_CONDITION,
  745.         JP_HINT_SVO,
  746.         FR_COMPOSE_AVOIR,
  747.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  748.         FR_PART_PREPOSIT_EN,    JP_PROP_ALL,
  749.         FR_PART_NONE,            JP_PROP_NONE
  750.     ),
  751.     JP_VERB( "%0H.%vc1", JP_KIND_IRU,        // je suis dans la voiture.
  752.         JP_PROP_CONDITION,
  753.         JP_HINT_SVO | JP_HINT_HUMAN,    // SVAではない。 je vais @ l'JP_VERB(cole.と同様に考える
  754.         FR_COMPOSE_AVOIR,
  755.         FR_PART_NOUN_ALL,        JP_PROP_HUMAN,
  756.         FR_PART_PREPOSIT_ALL,    JP_PROP_ALL,
  757.         FR_PART_NONE,            JP_PROP_NONE
  758.     ),
  759.     JP_VERB( "%0H.%cv1", JP_KIND_ARU,            // c'est sur la table.
  760.         JP_PROP_CONDITION,
  761.         JP_HINT_SVO,
  762.         FR_COMPOSE_AVOIR,
  763.         FR_PART_NOUN_ALL,        JP_PROP_THING | JP_PROP_PLACE | JP_PROP_CONDITION,
  764.         FR_PART_PREPOSIT_ALL,    JP_PROP_ALL,
  765.         FR_PART_NONE,            JP_PROP_NONE
  766.     ),
  767. // Subject + <etre> + Verb
  768.     JP_VERB( "%0H.%a1U", JP_KIND_DA,
  769.         JP_PROP_CONDITION,
  770.         JP_HINT_SVA,
  771.         FR_COMPOSE_AVOIR,
  772.         FR_PART_NOUN_ALL,    (JP_PROP)(JP_PROP_THING | JP_PROP_PLACE),
  773.         FR_PART_VERB_INF,    JP_PROP_ALL,
  774.         FR_PART_NONE,        JP_PROP_NONE
  775.     ),
  776.     JP_VERB( ".%s1", JP_KIND_NONE,            // c'est que
  777.         JP_PROP_CONDITION,
  778.         JP_HINT_SVA,
  779.         FR_COMPOSE_AVOIR,
  780.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,
  781.         FR_PART_SENTENCE_QUE_ORIGIN,JP_PROP_ALL,
  782.         FR_PART_NONE,                JP_PROP_NONE
  783.     ),
  784. // Subject + <etre> + Adjective / Adverb
  785. // C'est beau. それは美しい > それは美だ
  786.     JP_VERB( "%0H.%t1", JP_KIND_NONE,
  787.         JP_PROP_CONDITION,
  788.         JP_HINT_SVA,
  789.         FR_COMPOSE_AVOIR,
  790.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  791.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL | FR_PART_NUMETRIC_ALL), JP_PROP_ALL,
  792.         FR_PART_NONE,        JP_PROP_NONE
  793.     ),
  794.     JP_VERB(    ".%c1", JP_KIND_SAHEN,        // 命令形 sois severe!
  795.         JP_PROP_CONDITION,
  796.         JP_HINT_NONE,
  797.         FR_COMPOSE_AVOIR,
  798.         FR_PART_NONE,    JP_PROP_HUMAN,
  799.         (FR_PART)(FR_PART_ADJECTIVE_ALL | FR_PART_ADVERB_ALL), JP_PROP_ALL,
  800.         FR_PART_NONE,    JP_PROP_NONE
  801.     ),
  802. // Subject + <etre> + Noun
  803.     JP_VERB( "%0H.%s1", JP_KIND_DA,
  804.         JP_PROP_CONDITION,
  805.         JP_HINT_SVA | JP_HINT_DATE_SUBJECT,
  806.         FR_COMPOSE_AVOIR,
  807.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,    Is_Ce_Noun_Que,
  808.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    NULL,
  809.         FR_PART_NONE,                JP_PROP_NONE,    NULL,
  810.         Make_Ce_Noun_Que
  811.     ),
  812.     JP_VERB( ".何時", JP_KIND_DA,
  813.         JP_PROP_CONDITION,
  814.         JP_HINT_SVA | JP_HINT_DATE_SUBJECT,
  815.         FR_COMPOSE_AVOIR,
  816.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,    "il",        NULL,
  817.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    "heure",    HasQuel,
  818.         FR_PART_NONE,                JP_PROP_NONE,    NULL,        NULL,
  819.         NULL
  820.     ),
  821.     JP_VERB( "%0H.年上", JP_KIND_DA,        // je suis plus [g{.
  822.         JP_PROP_CONDITION,
  823.         JP_HINT_SVA | JP_HINT_HUMAN,
  824.         FR_COMPOSE_AVOIR,
  825.         FR_PART_NOUN_ALL,            JP_PROP_HUMAN,    NULL,        HasVerbPlus,
  826.         FR_PART_NOUN_ALL,            JP_PROP_NONE,    "[ge",        IsAttribPlus,
  827.         FR_PART_NONE,                JP_PROP_NONE,    NULL,        NULL,
  828.         CancelAdverbPlus
  829.     ),
  830.     JP_VERB( "%0H.年上", JP_KIND_DA,
  831.         JP_PROP_CONDITION,
  832.         JP_HINT_SVA | JP_HINT_HUMAN,
  833.         FR_COMPOSE_AVOIR,
  834.         FR_PART_NOUN_ALL,            JP_PROP_HUMAN,    NULL,        HasVerbPlus,
  835.         FR_PART_NOUN_ALL,            JP_PROP_NONE,    "[g{",        NULL,
  836.         FR_PART_NONE,                JP_PROP_NONE,    NULL,        NULL,
  837.         CancelAdverbPlus
  838.     ),
  839.     JP_VERB( ".%1", JP_KIND_DA,
  840.         JP_PROP_CONDITION,
  841.         JP_HINT_SVA | JP_HINT_DATE_SUBJECT,
  842.         FR_COMPOSE_AVOIR,
  843.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,    "il",        NULL,
  844.         FR_PART_NOUN_ALL,            JP_PROP_ALL,    NULL,        IsOnlyTime,
  845.         FR_PART_NONE,                JP_PROP_NONE,    NULL,        NULL,
  846.         NULL
  847.     ),
  848.     JP_VERB( ".%s1", JP_KIND_DA,            // c'etais mercredi hier.
  849.         JP_PROP_CONDITION,
  850.         JP_HINT_SVA | JP_HINT_DATE_SUBJECT,
  851.         FR_COMPOSE_AVOIR,
  852.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,
  853.         FR_PART_NOUN_GENERAL,        JP_PROP_DATE,
  854.         FR_PART_NONE,                JP_PROP_NONE
  855.     ),
  856.     // 命令形用の訳
  857.     JP_VERB( ".%1Iな", JP_KIND_GODAN_RA,    // sois humain!
  858.         JP_PROP_CONDITION,
  859.         JP_HINT_SVA,
  860.         FR_COMPOSE_AVOIR,
  861.         FR_PART_NONE,                JP_PROP_NONE,
  862.         FR_PART_NOUN_ALL,            JP_PROP_ALL,
  863.         FR_PART_NONE,                JP_PROP_NONE
  864.     ),
  865.     JP_VERB( "%0H.%s1", JP_KIND_DA,
  866.         JP_PROP_CONDITION,
  867.         JP_HINT_SVA,
  868.         FR_COMPOSE_AVOIR,
  869.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  870.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  871.         FR_PART_NONE,        JP_PROP_NONE
  872.     ),
  873. };
  874.  
  875. char *FaireAdjectiveList[] = {
  876.     "chaud",
  877.     "froid",
  878.     "",
  879. };
  880. //
  881. // <faire>に付くと形容詞になるか
  882. // Il fait chaud. -> 暑い
  883. //
  884. BOOL
  885. IsFaireAdjective(TOKEN *p)
  886. {
  887.     char    **s = FaireAdjectiveList;
  888.     int        i;
  889.  
  890.     for(i = 0; s[i][0]; i++) {
  891.         if(IsTokenFrench(p, s[i]))
  892.             return(TRUE);
  893.     }
  894.     return(FALSE);
  895. }
  896.  
  897. char *FaireActionList[] = {
  898.     "devoir",        // 宿題を作る -> 宿題をする
  899.     "",        // End Code
  900. };
  901.  
  902. BOOL
  903. IsFaireAction(TOKEN *p)
  904. {
  905.     char    **s = FaireActionList;
  906.     int        i;
  907.  
  908.     for(i = 0; s[i][0]; i++) {
  909.         if(IsTokenFrench(p, s[i]))
  910.             return(TRUE);
  911.     }
  912.     return(FALSE);
  913. }
  914.  
  915. BOOL
  916. IsNotJpPropAll(TOKEN *p)
  917. {
  918.     if(p && p->jpProp == JP_PROP_ALL)
  919.         return(FALSE);
  920.     else
  921.         return(TRUE);
  922. }
  923.  
  924. void
  925. MakeObject1Thing(TOKEN *sentence)
  926. {
  927.     if(sentence
  928.     && sentence->object2
  929.     && sentence->object2->object1
  930.     && IsObjectMatch(sentence->object2->object1, FR_PART_NOUN_OBJECT_BOTH))    {
  931.         TOKEN    *obj = sentence->object2->object1;
  932.         SelectJpPronoun2(obj, JP_PROP_THING, JP_PROP_ALL);
  933.     }
  934. }
  935.  
  936.  
  937. const    JP_VERB    dic_faire[] = {
  938.     JP_VERB( "%0H.%1W.%f2",        JP_KIND_SERU,
  939.         JP_PROP_ACTION,
  940.         JP_HINT_SVOV,
  941.         FR_COMPOSE_AVOIR,
  942.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  943.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,
  944.         FR_PART_VERB_INF,    JP_PROP_ACTION
  945.     ),
  946.     JP_VERB( "%0H.%1W%f2.", JP_KIND_NONE,
  947.         JP_PROP_ACTION,
  948.         JP_HINT_SVOV,
  949.         FR_COMPOSE_AVOIR,
  950.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  951.         FR_PART_NOUN_ALL,    JP_PROP_ALL,
  952.         FR_PART_VERB_INF,    JP_PROP_ACTION
  953.     ),
  954.     JP_VERB( "%0H.%1W.歩", JP_KIND_GODAN_KA,        // je fais douze lieues @ pied.
  955.         JP_PROP_ACTION,
  956.         JP_HINT_SVOO | JP_HINT_HUMAN,
  957.         FR_COMPOSE_AVOIR,
  958.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,    NULL,
  959.         FR_PART_NOUN_ALL,    JP_PROP_PLACE,    NULL,
  960.         FR_PART_PREPOSIT_A,    JP_PROP_ALL,    "pied"
  961.     ),
  962.     JP_VERB( "%0H.%2I%s1.", JP_KIND_SAHEN,        // je fais de l'oeil @ lui. -> 彼に目配せをする
  963.         JP_PROP_ACTION,
  964.         JP_HINT_SVOO | JP_HINT_HUMAN,
  965.         FR_COMPOSE_AVOIR,
  966.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,
  967.         FR_PART_NOUN_ALL,    JP_PROP_ACTION,
  968.         FR_PART_PREPOSIT_A,    JP_PROP_HUMAN
  969.     ),
  970.     JP_VERB( "%0H.%2W.%1I", JP_KIND_SAHEN,        // faire un mus{e d'une {glise desaffect{e 
  971.         JP_PROP_ACTION,
  972.         JP_HINT_SVOA | JP_HINT_HUMAN,
  973.         FR_COMPOSE_AVOIR,
  974.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  975.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  976.         FR_PART_PREPOSIT_DE,    JP_PROP_ALL
  977.     ),
  978. // Subject + <faire> + Preposition
  979.     // Je fait comme Descates.
  980.     JP_VERB( "%0H.%1Nように", JP_KIND_SAHEN,
  981.         JP_PROP_CONDITION,
  982.         JP_HINT_SVA,
  983.         FR_COMPOSE_AVOIR,
  984.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  985.         FR_PART_PREPOSIT_COMME,    JP_PROP_ALL,
  986.         FR_PART_NONE,            JP_PROP_NONE
  987.     ),
  988.  
  989. // Subject + <faire> + Adjective -1-
  990.     // il fait chaud.    熱い -> 暑い
  991.     JP_VERB( ".暑", JP_KIND_KEIYOSHI,
  992.         JP_PROP_CONDITION,
  993.         JP_HINT_SVA,
  994.         FR_COMPOSE_AVOIR,
  995.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,    "il",
  996.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_NONE,    "chaud",
  997.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  998.     ),
  999.     // il fait doux.
  1000.     JP_VERB( ".暖か", JP_KIND_KEIYOSHI,
  1001.         JP_PROP_CONDITION,
  1002.         JP_HINT_SVA,
  1003.         FR_COMPOSE_AVOIR,
  1004.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,    "il",
  1005.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_NONE,    "doux",
  1006.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  1007.     ),
  1008.     // il fait frais.    寒い -> 涼しい
  1009.     JP_VERB( ".涼し", JP_KIND_KEIYOSHI,
  1010.         JP_PROP_CONDITION,
  1011.         JP_HINT_SVA,
  1012.         FR_COMPOSE_AVOIR,
  1013.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,    "il",
  1014.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_NONE,    "frais",
  1015.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  1016.     ),
  1017.     // il fait noir.
  1018.     JP_VERB( ".暗くな", JP_KIND_GODAN_RA,
  1019.         JP_PROP_CONDITION,
  1020.         JP_HINT_SVA,
  1021.         FR_COMPOSE_AVOIR,
  1022.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_NONE,    "il",
  1023.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_NONE,    "noir",
  1024.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  1025.     ),
  1026.     // il fait froid.
  1027.     JP_VERB( ".%tv1",    JP_KIND_NONE,
  1028.         JP_PROP_CONDITION,
  1029.         JP_HINT_SVA,
  1030.         FR_COMPOSE_AVOIR,
  1031.         FR_PART_NOUN_IMPERSONAL,    JP_PROP_ALL,    NULL,
  1032.         FR_PART_ADJECTIVE_GENERAL,    JP_PROP_ALL,    IsFaireAdjective,
  1033.         FR_PART_NONE,                JP_PROP_NONE,    NULL
  1034.     ),
  1035. // Subject + <faire> + Noun
  1036.     JP_VERB( "%0H.%1W.払",    JP_KIND_GODAN_WA,
  1037.         JP_PROP_ACTION,
  1038.         JP_HINT_SVO,
  1039.         FR_COMPOSE_AVOIR,
  1040.         FR_PART_NOUN_ALL,    JP_PROP_ALL,    NULL,
  1041.         FR_PART_NOUN_ALL,    JP_PROP_NONE,    "attention",
  1042.         FR_PART_NONE,        JP_PROP_NONE,    NULL
  1043.     ),
  1044.     JP_VERB( "%0H.%1W.おこ",    JP_KIND_GODAN_SA,
  1045.         JP_PROP_ACTION,
  1046.         JP_HINT_SVO,
  1047.         FR_COMPOSE_AVOIR,
  1048.         FR_PART_NOUN_ALL,    JP_PROP_ALL,    NULL,
  1049.         FR_PART_NOUN_ALL,    JP_PROP_NONE,    "feu",
  1050.         FR_PART_NONE,        JP_PROP_NONE,    NULL
  1051.     ),
  1052.     JP_VERB( ".%a1暑さ",    JP_KIND_DA,
  1053.         JP_PROP_ACTION,
  1054.         JP_HINT_SVO,
  1055.         FR_COMPOSE_AVOIR,
  1056.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,        "il",        NULL,
  1057.         FR_PART_NOUN_ALL,        JP_PROP_WEATHER,    "chaleur",    NULL,
  1058.         FR_PART_NONE,            JP_PROP_NONE,        NULL,        NULL,
  1059.         ReplaceObject1
  1060.     ),
  1061.     JP_VERB( "夜が.明",    JP_KIND_KERU,
  1062.         JP_PROP_ACTION,
  1063.         JP_HINT_SVO,
  1064.         FR_COMPOSE_AVOIR,
  1065.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,        "il",
  1066.         FR_PART_NOUN_ALL,        JP_PROP_NONE,        "jour",
  1067.         FR_PART_NONE,            JP_PROP_NONE,        NULL
  1068.     ),
  1069.     JP_VERB( ".夜にな",    JP_KIND_GODAN_RA,
  1070.         JP_PROP_ACTION,
  1071.         JP_HINT_SVO,
  1072.         FR_COMPOSE_AVOIR,
  1073.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,        "il",
  1074.         FR_PART_NOUN_ALL,        JP_PROP_NONE,        "nuit",
  1075.         FR_PART_NONE,            JP_PROP_NONE,        NULL
  1076.     ),
  1077.     JP_VERB( ".%a1天気",    JP_KIND_DA,
  1078.         JP_PROP_ACTION,
  1079.         JP_HINT_SVO,
  1080.         FR_COMPOSE_AVOIR,
  1081.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,        "il",        NULL,
  1082.         FR_PART_NOUN_ALL,        JP_PROP_WEATHER,    "temps",    NULL,
  1083.         FR_PART_NONE,            JP_PROP_NONE,        NULL,        NULL,
  1084.         ReplaceObject1
  1085.     ),
  1086.     JP_VERB( "%a1G.吹",    JP_KIND_GODAN_KA,
  1087.         JP_PROP_ACTION,
  1088.         JP_HINT_SVO,
  1089.         FR_COMPOSE_AVOIR,
  1090.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,    "il",
  1091.         FR_PART_NOUN_ALL,        JP_PROP_NONE,    "vent",
  1092.         FR_PART_NONE,            JP_PROP_NONE,    NULL
  1093.     ),
  1094.     JP_VERB( "%0H.%1W.",    JP_KIND_SAHEN,
  1095.         JP_PROP_ACTION,
  1096.         JP_HINT_SVO | JP_HINT_HUMAN,
  1097.         FR_COMPOSE_AVOIR,
  1098.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  1099.         FR_PART_NOUN_GENERAL,    JP_PROP_NONE,    IsFaireAction,
  1100.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  1101.         NULL
  1102.     ),
  1103.     JP_VERB( "%0H.%1W.育",        JP_KIND_TERU,
  1104.         JP_PROP_ACTION,
  1105.         JP_HINT_SVO,
  1106.         FR_COMPOSE_AVOIR,
  1107.         FR_PART_NOUN_ALL,    JP_PROP_ALL,    NULL,
  1108.         FR_PART_NOUN_ALL,    JP_PROP_HUMAN,    IsNotJpPropAll,
  1109.         FR_PART_NONE,        JP_PROP_NONE,    NULL,
  1110.         NULL
  1111.     ),
  1112.     JP_VERB( "%0H.%1W.作",        JP_KIND_GODAN_RA,
  1113.         JP_PROP_ACTION,
  1114.         JP_HINT_SVO,
  1115.         FR_COMPOSE_AVOIR,
  1116.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  1117.         FR_PART_NOUN_ALL,        JP_PROP_THING,    IsNotJpPropAll,
  1118.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  1119.         NULL
  1120.     ),
  1121.     JP_VERB( "%0H.%1W.",        JP_KIND_SAHEN,        // je fais 
  1122.         JP_PROP_ACTION,
  1123.         JP_HINT_SVO | JP_HINT_HUMAN,
  1124.         FR_COMPOSE_AVOIR,
  1125.         FR_PART_NOUN_ALL,        JP_PROP_ALL,    NULL,
  1126.         FR_PART_NOUN_ALL,        JP_PROP_ACTION,    NULL,
  1127.         FR_PART_NONE,            JP_PROP_NONE,    NULL,
  1128.         MakeObject1Thing
  1129.     ),
  1130. // Subject + <faire> + Adjective -2-
  1131.     JP_VERB( "%a1天気.", JP_KIND_DA,        // il fait beau.
  1132.         JP_PROP_CONDITION,
  1133.         JP_HINT_SVO,    FR_COMPOSE_AVOIR,
  1134.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,
  1135.         FR_PART_ADJECTIVE_ALL,    JP_PROP_WEATHER,
  1136.         FR_PART_NONE,            JP_PROP_NONE
  1137.     ),
  1138.     JP_VERB( "%t1.",            JP_KIND_NONE,        // Il fait trois heurese.
  1139.         JP_PROP_ACTION,
  1140.         JP_HINT_SVA,
  1141.         FR_COMPOSE_AVOIR,
  1142.         FR_PART_NOUN_IMPERSONAL,JP_PROP_ALL,
  1143.         FR_PART_ADJECTIVE_ALL,    JP_PROP_TIME | JP_PROP_WEATHER,
  1144.         FR_PART_NONE,            JP_PROP_NONE
  1145.     ),
  1146.     JP_VERB( "%0H.%tc1.み", JP_KIND_SHIMOICHI,    // Elle fait vieux    彼女は老けてみえる
  1147.         JP_PROP_CONDITION,
  1148.         JP_HINT_SVA,
  1149.         FR_COMPOSE_AVOIR,
  1150.         FR_PART_NOUN_ALL,        JP_PROP_ALL,
  1151.         FR_PART_ADJECTIVE_ALL,    JP_PROP_ALL,
  1152.         FR_PART_NONE,            JP_PROP_NONE
  1153.     ),
  1154. };
  1155.  
  1156. //
  1157. // PatternMatchingに用いているので、etre, avoirの場所は変えてはいけない
  1158. //
  1159. VERB    verbTable1[] = {
  1160.     { "]tre",        "",            2,        JPVERB_DIC(dic_etre)    },
  1161.     { "avoir",        "",            1,         JPVERB_DIC(dic_avoir)    },
  1162.     { "aller",        "",            14,        JPVERB_DIC(dic_aller)    },
  1163.     { "faire",        "f",        63,        JPVERB_DIC(dic_faire)    },
  1164.     { "", "", 0,NULL, }        // End code
  1165. };
  1166.